#ifndef BAMBOODRIVE_H_
#define BAMBOORIVE_H_

#include "RobotDrive.h"

class SpeedController;
class GenericHID;
class DriverStationLCD;

class BambooDrive 
{
public:

	BambooDrive(UINT32 MotorChannel_FL, UINT32 MotorChannel_FR, UINT32 MotorChannel_BL, UINT32 MotorChannel_BR, DriverStationLCD *dslcd);
	
	virtual ~BambooDrive(void);

	void MecanumDrive(float xValue, float yValue, float zValue);
	
	void MecanumDrive(GenericHID *stick);
	
	void ArcadeDrive(float xValue, float yValue);
	
	void ArcadeDrive(GenericHID *stick);
	
	int Teleop(GenericHID *stick, float gyroVal);
	
	void SetAllWheelMotorSpeeds(float speed1, float speed2, float speed3, float speed4);
	
	void SetTwoWheelMotorSpeeds(float speed1, float speed2);
	
private:
	float Limit(float num);
	float Max(float num1, float num2);
	float Max(float num1, float num2, float num3, float num3);
	
	SpeedController *m_frontRightMotor;
	SpeedController *m_frontLeftMotor;
	SpeedController *m_backLeftMotor;
	SpeedController *m_backRightMotor;	
	
	DriverStationLCD *m_dslcd;
	unsigned int m_counter;
	bool m_gyro;
	bool m_gyroDiff;
};

#endif

